﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace DataCoreTechnologies.Scribe.Business
{
   internal sealed class FilterPreferences
   {
      //Static Methods
      internal static FilterPreferences CreateFilterPreferences()
      {
         return new FilterPreferences();
      }
      internal static FilterPreferences GetFilterPreferences()
      {
         return _filterPreferences;
      }
      internal static void SaveFilterPreferences(FilterPreferences filterPreferences)
      {
         _filterPreferences = filterPreferences;
      }
      
      //Static Properties
      internal static Boolean ShowTablesPage
      {
         get
         {
            return _filterPreferences._showTablesPage;
         }
      }
      internal static Boolean ShowViewsPage
      {
         get
         {
            return _filterPreferences._showViewsPage;
         }
      }
      internal static Boolean ShowStoredProceduresPage
      {
         get
         {
            return _filterPreferences._showStoredProceduresPage;
         }
      }
      internal static Boolean ShowFunctionsPage
      {
         get
         {
            return _filterPreferences._showFunctionsPage;
         }
      }
      internal static Boolean ShowIndexesPage
      {
         get
         {
            return _filterPreferences._showIndexesPage;
         }
      }
      internal static Boolean ShowDataTypesPage
      {
         get
         {
            return _filterPreferences._showDataTypesPage;
         }
      }
      internal static Boolean ShowSchemasPage
      {
         get
         {
            return _filterPreferences._showSchemasPage;
         }
      }
      internal static Boolean ShowColumnsPage
      {
         get
         {
            return _filterPreferences._showColumnsPage;
         }
      }
      internal static Boolean ShowDefaultValuesPage
      {
         get
         {
            return _filterPreferences._showDefaultValuesPage;
         }
      }
      internal static Boolean ShowParametersPage
      {
         get
         {
            return _filterPreferences._showParametersPage;
         }
      }
      internal static Boolean ShowTriggersPage
      {
         get
         {
            return _filterPreferences._showTriggersPage;
         }
      }

      //Methods
      internal void Copy(FilterPreferences copy)
      {
         copy._showTablesPage = this._showTablesPage;
         copy._showViewsPage = this._showViewsPage;
         copy._showStoredProceduresPage = this._showStoredProceduresPage;
         copy._showFunctionsPage = this._showFunctionsPage;
         copy._showIndexesPage = this._showIndexesPage;
         copy._showDataTypesPage = this._showDataTypesPage;
         copy._showSchemasPage = this._showSchemasPage;
         copy._showColumnsPage = this._showColumnsPage;
         copy._showDefaultValuesPage = this._showDefaultValuesPage;
         copy._showParametersPage = this._showParametersPage;
         copy._showTriggersPage = this._showTriggersPage;
      }

      //Properties
      internal Boolean GetShowTablesPage
      {
         get
         {
            return _showTablesPage;
         }
      }
      internal Boolean SetShowTablesPage
      {
         set
         {
            _showTablesPage = value;
         }
      }
      internal Boolean GetShowViewsPage
      {
         get
         {
            return _showViewsPage;
         }
      }
      internal Boolean SetShowViewsPage
      {
         set
         {
            _showViewsPage = value;
         }
      }
      internal Boolean GetShowStoredProceduresPage
      {
         get
         {
            return _showStoredProceduresPage;
         }
      }
      internal Boolean SetShowStoredProceduresPage
      {
         set
         {
            _showStoredProceduresPage = value;
         }
      }
      internal Boolean GetShowFunctionsPage
      {
         get
         {
            return _showFunctionsPage;
         }
      }
      internal Boolean SetShowFunctionsPage
      {
         set
         {
            _showFunctionsPage = value;
         }
      }
      internal Boolean GetShowIndexesPage
      {
         get
         {
            return _showIndexesPage;
         }
      }
      internal Boolean SetShowIndexesPage
      {
         set
         {
            _showIndexesPage = value;
         }
      }
      internal Boolean GetShowDataTypesPage
      {
         get
         {
            return _showDataTypesPage;
         }
      }
      internal Boolean SetShowDataTypesPage
      {
         set
         {
            _showDataTypesPage = value;
         }
      }
      internal Boolean GetShowSchemasPage
      {
         get
         {
            return _showSchemasPage;
         }
      }
      internal Boolean SetShowSchemasPage
      {
         set
         {
            _showSchemasPage = value;
         }
      }
      internal Boolean GetShowColumnsPage
      {
         get
         {
            return _showColumnsPage;
         }
      }
      internal Boolean SetShowColumnsPage
      {
         set
         {
            _showColumnsPage = value;
         }
      }
      internal Boolean GetShowDefaultValuesPage
      {
         get
         {
            return _showDefaultValuesPage;
         }
      }
      internal Boolean SetShowDefaultValuesPage
      {
         set
         {
            _showDefaultValuesPage = value;
         }
      }
      internal Boolean GetShowParametersPage
      {
         get
         {
            return _showParametersPage;
         }
      }
      internal Boolean SetShowParametersPage
      {
         set
         {
            _showParametersPage = value;
         }
      }
      internal Boolean GetShowTriggersPage
      {
         get
         {
            return _showTriggersPage;
         }
      }
      internal Boolean SetShowTriggersPage
      {
         set
         {
            _showTriggersPage = value;
         }
      }

      //Contructors
      private FilterPreferences()
      {
      }

      //Private variables
      private Boolean _showTablesPage = true;
      private Boolean _showViewsPage = true;
      private Boolean _showStoredProceduresPage = true;
      private Boolean _showFunctionsPage = true;
      private Boolean _showIndexesPage = true;
      private Boolean _showDataTypesPage = true;
      private Boolean _showSchemasPage = true;
      private Boolean _showColumnsPage = true;
      private Boolean _showDefaultValuesPage = true;
      private Boolean _showParametersPage = true;
      private Boolean _showTriggersPage = true;

      private static FilterPreferences _filterPreferences = new FilterPreferences();
   }
}
